package com.smartthinking.CICPNL.home.activity;
import java.util.Dictionary;
import java.util.List;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.BitmapDrawable;
import android.os.Environment;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.smartthinking.CICPNL.R;


public class PonentesArrayAdapter extends BaseAdapter {
	 private final Context context;
	  private final List<Dictionary<String,String>> values;
	  private final String server;
	  public LinearLayout fotos;
	  Utilities util;

  public PonentesArrayAdapter(Context context, List<Dictionary<String,String>> values, String server) {
	    this.context = context;
	    this.values = values;
	    this.server = server;
	    util = new Utilities();
}

 
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View rowView = inflater.inflate(R.layout.ui_ponentes_items, parent, false);
    
    Dictionary<String,String> dic = values.get(position);
   
    TextView titulo = (TextView) rowView.findViewById(R.id.tv_ponenetesitems_ponent);
    titulo.setText(dic.get("pon_nombre").toString() + " " + dic.get("pon_paterno").toString() + " " + dic.get("pon_materno").toString());
    //ImageView imgFoto = (ImageView) rowView.findViewById(R.id.iv_ponenetesitems_imagen);
    LinearLayout foto = (LinearLayout) rowView.findViewById(R.id.ll_ponenetesitems_imagen);
    
    if (dic.get("pon_foto").toString().equals("") || dic.get("pon_foto").toString().equals(null) ){
    }else{
	    ImageViewRounded imgFoto = new ImageViewRounded(context);
	    BitmapFactory.Options bmpOptions = new BitmapFactory.Options();
	    bmpOptions.inSampleSize = 5;
	    Bitmap bmp = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + "/Pediatria/" + dic.get("pon_foto").toString(),bmpOptions);
	    imgFoto.setScaleType(ScaleType.FIT_XY);
	    imgFoto.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
	    imgFoto.setImageBitmap(bmp);
		foto.addView(imgFoto);
    }
    return rowView;
  }

  @Override
  public int getCount() {
  	// TODO Auto-generated method stub
  	return values.size();
  }

  @Override
  public Object getItem(int arg0) {
  	// TODO Auto-generated method stub
  	return null;
  }

  @Override
  public long getItemId(int arg0) {
  	// TODO Auto-generated method stub
  	return 0;
  }

  public class ImageViewRounded extends ImageView {

      public ImageViewRounded(Context context) {
          super(context);
      }

      public ImageViewRounded(Context context, AttributeSet attrs) {
          super(context, attrs);
      }

      public ImageViewRounded(Context context, AttributeSet attrs, int defStyle) {
          super(context, attrs, defStyle);
      }

      @Override
      protected void onDraw(Canvas canvas) {
          BitmapDrawable drawable = (BitmapDrawable) getDrawable();

          if (drawable == null) {
              return;
          }

          if (getWidth() == 0 || getHeight() == 0) {
              return; 
          }

          Bitmap fullSizeBitmap = drawable.getBitmap();

          int scaledWidth = getMeasuredWidth();
          int scaledHeight = getMeasuredHeight();

          Bitmap mScaledBitmap;
          if (scaledWidth == fullSizeBitmap.getWidth() && scaledHeight == fullSizeBitmap.getHeight()) {
              mScaledBitmap = fullSizeBitmap;
          } else {
              mScaledBitmap = Bitmap.createScaledBitmap(fullSizeBitmap, scaledWidth, scaledHeight, true /* filter */);
          }

          Bitmap roundBitmap = getRoundedCornerBitmap(getContext(), mScaledBitmap, 5, scaledWidth, scaledHeight,
                  false, false, false, false);
          canvas.drawBitmap(roundBitmap, 0, 0, null);

      }

  }


  public static Bitmap getRoundedCornerBitmap(Context context, Bitmap input, int pixels , int w , int h , boolean squareTL, boolean squareTR, boolean squareBL, boolean squareBR  ) {

      Bitmap output = Bitmap.createBitmap(w, h, Config.ARGB_8888);
      Canvas canvas = new Canvas(output);
      final float densityMultiplier = context.getResources().getDisplayMetrics().density;

      final int color = 0xff424242;
      final Paint paint = new Paint();
      final Rect rect = new Rect(0, 0, w, h);
      final RectF rectF = new RectF(rect);

      //make sure that our rounded corner is scaled appropriately
      final float roundPx = pixels*densityMultiplier;

      paint.setAntiAlias(true);
      canvas.drawARGB(0, 0, 0, 0);
      paint.setColor(color);
      canvas.drawRoundRect(rectF, roundPx, roundPx, paint);


      //draw rectangles over the corners we want to be square
      if (squareTL ){
          canvas.drawRect(0, 0, w/2, h/2, paint);
      }
      if (squareTR ){
          canvas.drawRect(w/2, 0, w, h/2, paint);
      }
      if (squareBL ){
          canvas.drawRect(0, h/2, w/2, h, paint);
      }
      if (squareBR ){
          canvas.drawRect(w/2, h/2, w, h, paint);
      }

      paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
      canvas.drawBitmap(input, 0,0, paint);

      return output;
  }


  } 
